package com.ocom.payhandle.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ocom.common.entity.card.EntityConsTypeConfig;
import com.ocom.common.enums.DataSourceEnum;
import com.ocom.common.enums.MasterSlaveEnum;
import com.ocom.mysql.aspect.DataSourceAspect;
import com.ocom.payhandle.dao.IDaoConsTypeConfig;
import com.ocom.payhandle.service.ConsTypeConfigService;
import com.ocom.payhandle.vo.DeviceInfoVo;
import com.ocom.redis.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class ConsTypeConfigServiceImpl extends ServiceImpl<IDaoConsTypeConfig, EntityConsTypeConfig> implements ConsTypeConfigService {

	@Autowired
	private IDaoConsTypeConfig iDaoConsTypeConfig;

	@Resource
	private RedisUtil redisUtil;

	@DataSourceAspect(type= DataSourceEnum.PART_DB,companyId = "companyId")
	@Override
	public EntityConsTypeConfig selectEntityConsTypeConfig(Long companyId, Integer consType) {
		Long timeLong= Long.valueOf(4*60*60);
		String entityConsTypeConfigRedis="cons_type_config#comId:"+companyId+"#consType:"+consType+"#";
		Object objectEntityConsTypeConfig=redisUtil.get(entityConsTypeConfigRedis);
		EntityConsTypeConfig entityConsTypeConfig=null;
		if (objectEntityConsTypeConfig == null) {
			QueryWrapper<EntityConsTypeConfig> queryWrapper=new QueryWrapper<>();
			queryWrapper.eq("com_id",companyId);
			queryWrapper.eq("cons_type",consType);
			queryWrapper.orderByDesc("update_time");
			queryWrapper.last("limit 1");
			entityConsTypeConfig=iDaoConsTypeConfig.selectOne(queryWrapper);
			if (entityConsTypeConfig!=null){
				redisUtil.set(entityConsTypeConfigRedis, entityConsTypeConfig,timeLong);
			}
		}else {
			entityConsTypeConfig = JSON.parseObject(JSON.toJSONString(objectEntityConsTypeConfig), EntityConsTypeConfig.class);
		}
		return entityConsTypeConfig;
	}
}
